A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates in general to the field of object-oriented programming and in particular to a method for readily maintaining a version history of objects and object models in a repository storing such object models.
The storage and manipulation of data records or objects within a database application is well known in the prior art. A database allows one to store information in it; and it does not necessarily have any special meaning associated with the things that are stored in the database. A repository not only uses the database as a data store, but it is a layer above a database. A repository has information about the things stored in the database. A repository is like a card catalog that is found in the library, with the library being analogous to the database.
With the advent of repositories, improvements in the accessibility of data within databases has improved. However, as these repositories have become larger and more complex a method is required for defining, tracking and maintaining objects and versions thereof in an object oriented repository.
A version service enables users to record changes to objects over time and thus to maintain information about the previous states of these objects. Each of these states is maintained in a separate object in the repository. As the repository is used over time the number of evolutionary states of a versionable object increases. Thus, it becomes more and more difficult to find objects within the version tree as the number of historical states of the object increases. For example, at some point in time a variant branch was created. Over time multiple historical states and later sub-variant branches from this branch were created. Consequently, the version tree becomes more and more complex, which increases the complexity of locating a versioned object.
An example of a prior art technique for versioning of objects in an object-oriented repository is disclosed in U.S. Pat. No. 5,671,398, entitled METHOD FOR COLLAPSING A VERSION TREE WHICH DEPICTS A HISTORY OF SYSTEM DATA AND PROCESSES FOR AN ENTERPRISE, U.S. Pat. No. 5,701,472, entitled METHOD FOR LOCATING A VERSIONED OBJECT WITHIN A VERSION TREE DEPICTING A HISTORY OF SYSTEM DATA AND PROCESSES FOR AN ENTERPRISE, both of which are assigned to the assignee hereof. Yet another prior art reference of interest is U.S. Pat. No. 5,504,879 entitled RESOLUTION OF RELATIONSHIP SOURCE AND TARGET IN A VERSIONED DATABASE MANAGEMENT SYSTEM by Neal R. Eisenberg, et al. All of these patents disclose a method for versioning whole objects rather than versioning individual property values as taught by the inventors hereof.
Another prior art method maintains the complete state of the latest version of each object and then maintains partial objects for earlier versions of each object. Such a prior art technique is taught in U.S. Pat. No. 5,347,653 entitled SYSTEM FOR RECONSTRUCTING PRIOR VERSIONS OF INDEXES USING RECORDS INDICATING CHANGES BETWEEN SUCCESSIVE VERSIONS OF THE INDEX by Rex A. Flynn, et al. Like other prior art versioning methods, there is more overhead involved in viewing historical states of objects. Moreover, this prior art method applies a version graph to an individual object rather than to a model as taught by the inventors hereof.
Accordingly, it is an object of this invention to provide a simplified versioning service for a repository.
Another object of this invention is to provide a method for versioning individual property values rather than whole objects, thereby obviating the necessity of making of a duplicate of an object when versioning it.
Still another object of this invention is to provide a simplified method for versioning objects without the necessity of updating multiple references to a new version of an object.
Yet another object of this invention is to provide a method for versioning, which when following a reference, it is not necessary to filter out versions of objects that are not of interest.
Still another object of this invention is to provide a method for versioning objects wherein the scope of a version graph is an entire model, rather than each object having its own version graph.
Another object of this invention is to provide a method for versioning objects wherein an object retains its identity from one version to the next.
These and other objects will become apparent as the invention is described in detail below. An improved computer-implemented method is provided, which maintains a version history of objects in a repository. Modifications to property values and links are tracked with respect to versions of a model. The method includes the steps of maintaining a start version and a list of end versions for each object in the model and maintaining a start version and a list of end versions for each attribute value in the model. Moreover, in response to a request for objects in a class with respect to a current version, only those objects whose start version is in the history of the current version and whose end versions are not in the history of the current version are retrieved Also, in response to a request for attribute values of an object with respect to a current version, only those values whose start version is in the history of the current version and whose end versions are not in the history of the current version are retrieved.
Still other objects, features and advantages of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein is shown and described only the preferred embodiment of the invention, simply by way of illustration of the best mode contemplated of carrying out the invention. As will be realized, the invention is capable of other and different embodiments, and its several details are capable of modifications in various obvious respects, all without departing from the invention. Accordingly, the drawings and description are to be regarded as illustrative in nature, and not as restrictive, and what is intended to be protected by Letters Patent is set forth in the appended claims. The present invention will become apparent when taken in conjunction with the following description and attached drawings, wherein like characters indicate like parts, and which drawings form a part of this application.